package cn.tedu.oop2;
/*测试抽象的入门案例*/
public class AbstractDemo {
    public static void main(String[] args) {
       // Animal a=new Animal();
        /**4.抽象类不可实例化,不能创建对象*/
        Animal a=new Pig();
        a.eat();
        a.fly();
        a.fly2();
    }

}
/*1.被abstract修饰的类是抽象类,
如果一个类中包含了抽象方法,这个类必须被声明为一个抽象类*/
abstract class Animal{
    public void eat(){
        System.out.println("吃啥都行");
        System.out.println("玩啥都行");
    }
    /*2.被abstract修饰的方法是抽象方法,抽象方法没有方法体*/
    public abstract void fly();
    public abstract void fly2();
}
/*3.当子类继承了抽象父类以后,有两种解决方案
* 方案一,变成抽象子类,"躺平,我也不实现"
* 方案二,变成普通子类,"父债子偿",子类需要实现父类中所有抽象方法*/
class Pig extends Animal{

    @Override
    public void fly() {
        System.out.println("我爸的债终于还清了.我家的猪鲨来过年了");
    }

    @Override
    public void fly2() {
        System.out.println("抽象父类中的所有抽象方法都要实现");
    }
}